package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import vista.BotonBorrador;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import modelo.Modelo;
import modelo.funciones.*;

public class CreadorDeFuncion implements ActionListener{
	
	private Modelo modelo;
	
	public CreadorDeFuncion(Modelo modelo)
	{
		this.setModelo(modelo);
	}
	/*
	 * aca iria todo los metodos para lograr el parseo parseo
	 * que seran llamados en actionPerformed, luego si el parseo
	 * fue exitoso se creara la funcion en cuestion y en caso 
	 * contrario haria saltar un cartel de error al ingresar
	 * la funcion 
	 * (non-Javadoc)
	 * @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
	 */
	public boolean funcionValida(String funcion){
		return true;
	}
	
	private void cartelFuncionInvalida(){
		JFrame frame=new JFrame("Funcion invalida");
		frame.setSize(420,90);
		JLabel label=new JLabel("El texto introducido no" +
		" corresponde a un formato de funcion valida");
		frame.add(label);
		frame.setVisible(true);
	}
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() instanceof JTextField)
		this.crearFuncion(((JTextField)e.getSource()).getText());
		else this.destruirFuncion(((BotonBorrador)e.getSource()).getFuncion());
	}
	
	public void crearFuncion(String texto){
		if (this.funcionValida(texto))
		this.getModelo().agregarFuncion(new RaizCuadrada(),texto);
		else this.cartelFuncionInvalida();
	}
	
	public void destruirFuncion(String funcion){
		if (funcion!=null)
		this.getModelo().sacarFuncion(funcion);
	}
	
	public void setModelo(Modelo modelo){
		this.modelo=modelo;
	}
	
	public Modelo getModelo(){
		return this.modelo;
	}

}
